The release proceeding of domain resources forgot to stop (or kill)
PM timer, and freed the domain structure.
VMX flag of VCPU#0 was not set when VHPT allocation for VCPU#0
failed. For this reason, domain_relinquish_resources() did not
call vmx_relinqush_guest_resources(). But the domain structure
was freed. As a result, timer_softirq_action() lose sight of
the callback function for PM timer.
Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
void domain_relinquish_resources(struct domain *d)
{
/* Relinquish guest resources for VT-i domain. */
- if (d->vcpu[0] && VMX_DOMAIN(d->vcpu[0]))
+ if (d->arch.is_vti)
vmx_relinquish_guest_resources(d);
/* Tear down shadow mode stuff. */